package com.biz.primus.ms.order.dao.po.embeddable;

import com.biz.primus.base.enums.PeriodsOfDeliveriesTime;
import com.biz.primus.model.oms.enums.OrderDeliveryType;
import com.biz.primus.model.order.enums.DeliveryState;
import com.biz.primus.model.order.enums.DeliveryType;
import lombok.Data;

import javax.persistence.*;
import java.sql.Timestamp;

/**
 * 配送信息
 *
 * @author Tiger Feng
 * @date 2017年10月30日
 */
@Data
@Embeddable
public class OrderDeliveryInfo {
    /**
     * 配送方式名称,商家维护
     */
    @Column(length = 128)
    private String deliveryName;
    /**
     * 快递公司名称
     */
    @Column(length = 32)
    private String expressName;
    /**
     * 快递单号
     */
    @Column(length = 128)
    private String expressNumber;
    /**
     * 物流公司代码
     */
    @Column(length = 32)
    private String expressCode;
    /**
     * 配送员编码
     */
    @Column(length = 32)
    private String shipManCode;
    /**
     * 配送员名称
     */
    @Column(length = 32)
    private String shipMan;
    /**
     * 发货时间
     */
    private Timestamp deliveryTimestamp;
    /**
     * 预计到货时间,立即送,预约送有值
     */
    private Timestamp expectDeliveryTimestamp;
    /**
     * 签收时间
     */
    private Timestamp receiveTimestamp;
    /**
     * 配送方式
     */
    @Enumerated(EnumType.STRING)
    @Column(length = 32)
    private DeliveryType deliverType;
    /**
     * 送货或者发货时间枚举
     */
    @Enumerated(EnumType.STRING)
    @Column(length = 32)
    private PeriodsOfDeliveriesTime periods;
    /**
     * 物流状态<p>
     * FOR_OUTBOUND：待出库、
     * FOR_TAKE_THEIR：待自提、
     * DISTRIBUTING：配送中、
     * SIGNED：已签收、
     * PART_OF_SIGNED：部分签收、
     * REJECT：拒收
     * </p>
     */
    @Convert(converter = DeliveryState.Converter.class)
    private DeliveryState deliveryState;

    /**
     * 物流费
     */
    private Integer deliveryMoney;
    /**
     * 预约送
     */
    private Boolean isAppointment = false;

//    /**
//     * 普通送配送时间
//     */
//    @Column(length = 64)
//    private String emallDeliversTime;

}
